package com.lagou.mapper;

import com.lagou.domain.User;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @Author wsl
 * @Date 2021/10/31 21:50
 * @Project_Name mybatis_quickstart
 */
public interface UserMapper {

    /**
     * 1.根据id查询用户
     * @return
     */
    public User findUserById(int id);

    /**
     * 2.查询所有用户
     * @return
     */
    public List<User> findAllResultMap();

    /**
     * 3.多条件查询方式一
     * @param id
     * @param username
     * @return
     */
    public List<User>  findByIdAndUsername1(int id,String username);

    /**
     * 4.多条件查询方式二
     * @param id
     * @param username
     * @return
     */
    public List<User>  findByIdAndUsername2(@Param("id") int id,@Param("username") String username);

    /**
     * 5.多条件查询方式三
     * @param user
     * @return
     */
    public List<User>  findByIdAndUsername3(User user);

    /**
     * 6.模糊查询：方式一
     * @param username
     * @return
     */
    public List<User> findByUsername1(String username);

    /**
     * 7.模糊查询：方式二
     * @param username
     * @return
     */
    public List<User> findByUsername2(String username);

    /**
     * 8.添加用户，并返回主键：方式一
     * @param user
     */
    public void saveUser(User user);

    /**
     * 9.添加用户，并返回主键：方式二
     * @param user
     */
    public void saveUser2(User user);

    /**
     * 10.动态SQL之if: 多条件查询
     * @param user
     * @return
     */
    public List<User> findByIdAndUsernameIf(User user);

    /**
     * 11.动态SQL之set: 动态更新
     * @param user
     * @return
     */
    public void updateIf(User user);

    /**
     * 12.动态SQL之foreach: 多值查询，集合方式
     * @param ids
     * @return
     */
    public List<User> findByList(List<Integer> ids);

    /**
     * 13.动态SQL之foreach: 多值查询，数组方式
     * @param ids
     * @return
     */
    public List<User> findByArray(Integer[] ids);

}
